Many products, such as software systems, are produced from separate parts or components. Commonly, the components are engineered in isolation and then combined to provide the final product. Updating the product, to produce a new product or a new version of the original product, involves creating new or updated versions of one or more of its components. Thus, the updated product may comprise a combination of original and updated components. Each component may be tested in isolation prior to being included in a final product build. However, such testing does not guarantee that he final product will work as expected and be free of faults. Faults may results from dependencies between two or more components that have been updated. Identifying whether or not a fault results from a genuine fault within a given component, or a dependency between components is a time consuming manual task.